Personally-wearable multifunction computer

ABSTRACT

A portable programmable computing device  1  containing a memory  14 , GPS antenna  12 , Wi-Fi component  21 , microprocessor  11 , and power source  15  housed in a mobile, compact, housing  41 . Housing  41  can be a wearable garment, allowing computing device  1  to be hidden within the garment, thus enabling device  1  to communicate with outside devices surreptitiously. Microprocessor  11  can be easily programmed and reprogrammed by a user. Device  1  can connect to the Internet through various means, based on the components contained within or otherwise coupled to device  1 , e.g., cellular component  23 , Bluetooth component  24 , and other wireless protocol (such as Wi-Fi  21 ) components, to execute various useful functions, including tracking, scanning, and hosting a personal Website. The scanner function is adapted to search for wireless networking access points, and can accommodate a plurality of protocols, including Wi-Fi and Bluetooth.

RELATED PATENT APPLICATIONS

This patent application is a continuation in part (CIP) of U.S. Ser. No.14/853,964 filed Sep. 14, 2015 (attorney docket WARC 0450 US), whichparent patent application claims the priority benefit of U.S.provisional patent application Ser. No. 62/050,173 filed Sep. 14, 2014(attorney docket WARC 0450 PR); the instant patent application alsoclaims the priority benefit of U.S. provisional patent application Ser.No. 62/553,841 filed Sep. 2, 2017 (attorney docket WARC 0451 PR); allthree of these previously filed patent applications are herebyincorporated by reference in their entireties into the present patentapplication.

TECHNICAL FIELD

The present invention is a mobile, small form factor, multifunctioncomputing device containing a microcontroller (microprocessor) connectedto a Wi-Fi access device, a GPS unit, and a memory card.

BACKGROUND ART

Current Internet of things (IoT) devices tend to be designed for asingle, specific use, or require extensive programming capabilities tomodify the intended use. The present invention addresses theshortcomings of conventional mobile IoT devices currently available tousers. The invention is a multipurpose and easily reprogrammable IoTdevice. Functions include tracking, scanning, and hosting a personalWebsite.

DISCLOSURE OF INVENTION

The present invention 1 comprises a microcontroller 11, memory card 14,and at least one wireless communications access unit 21-24 in a small,portable housing 41 that can be easily carried or worn by a human, anon-human animal, or a robot. The invention 1 can be incorporated in anunmanned drone, a manned aircraft, a self-driving terrestrial vehicle,or a manned terrestrial vehicle. Some examples of suitable housings 41include an animal collar, ID lanyard, nametag, and clothing items suchas shirts, belts, hats, and other wearable items, includingundergarments such as corsets. Each instantiation of the presentinvention is called a system unit 1. A system unit 1 can be hiddenwithin its housing 41; this enables surreptitious communications betweenunit 1 and outside devices. Microcontroller 11 is configured to performa base set of functions, and is programmable to allow a user to changethe behavior of the corresponding system unit 1. Additional peripheralscan be added to unit 1 to alter system functionality. System unit 1 cancommunicate using a plurality of communications protocols including, butnot limited to, Wi-Fi, cellular devices, software-defined radio,short-range radio, long-range radio, Bluetooth™, and Near FieldCommunication (NFC). System units 1 can also connect, control, andotherwise interact with each other 1 and with one or more third partydevices.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates an embodiment of the present invention in whichcomponents 12-15 are connected directly to a Spark microcontroller 11.

FIG. 2 is a block diagram of a system unit 1.

FIG. 3 illustrates an example of a method for programming a system unit1.

FIG. 4 illustrates an example of a method for creating and flashing auser created program to a system unit 1.

FIG. 5 illustrates an example of a Wi-Fi scanning procedure that systemunit 1 is adapted to perform.

FIG. 6 illustrates an example of a data upload procedure.

FIG. 7 illustrates an embodiment of the present invention comprising athree tier configuration of system units 1.

FIG. 8 illustrates an embodiment of the present invention in which asystem unit 1 is used a relay to reach other system units 1.

FIG. 9 illustrates an example of a captive portal advertisementprocedure usable in conjunction with the present invention.

FIG. 10 illustrates an example of a captive portal convention procedureusable in conjunction with the present invention.

FIG. 11 is an isometric view of a variant of the present invention knownas DopeScope 40.

FIG. 12 is an isometric view of DopeScope 40 with part of its housing 41removed.

DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS

A specific example of a portable system unit 1 utilizes a Spark Coremicrocontroller 11 with an embedded TI CC3000 Wi-Fi solution; a GP-635TGPS Antenna 12, JST SH Jumper 6-wire 13 (1 ft); a MicroSD Breakout Board14; and an appropriate power source such as battery 15. A block diagramof this embodiment is displayed in FIG. 1. Alternative components can besubstituted in, such as different antennas 12, microcontroller 11boards, and connection solutions. The microcontroller 11 and alternativecomponents can be replaced with a system on a chip (SOC) or a System ina Package (SOP). The Spark Core microcontroller 11, which isprogrammable, is connected to a GP-635T GPS antenna 12 via the RXconnector on the Spark Core 11 to Pin 3 on the GP-635T GPS (GlobalPositioning System) antenna 12. The GPS antenna 12 gets power from theSpark Core 11 by connecting GPS antenna Pin 1 to the Spark Core GNDconnection, and GPS antenna Pin 2 to the Spark Core 3V3 connection.Optionally, GPS antenna Pin 5 can be connected to the Spark TX pin. TheGPS antenna 12 listens to radio transmissions broadcast from the fleetof GPS satellites orbiting the earth. The GPS antenna 12 feeds thatinformation via the serial connection to the RX pin on the Spark Coremicrocontroller 11. In some embodiments, TinyGPS++ software libraries onthe Spark Core 11 translate that information into date, time, latitude,and longitude. In some embodiments, the information comprisesacceleration, altitude, direction, and/or other pertinent location andmovement data.

The Spark Core microcontroller 11 connects to the SparkFun MicroSDBreakout Board 14 by connecting the Spark Core A5 pin to the BreakoutBoard DI chip; connecting the Spark A4 chip to the Breakout Board DOpin; connecting the Spark A3 pin to the Breakout Board SCK pin;connecting the Spark Core A2 pin to the Breakout Board CS pin; andproviding power by connecting the Spark Core GND to the Breakout BoardGND and the Spark 3v3 pin to the Breakout Board VCC pin. In someembodiments, the SD card 14 is utilized to record data collected by thecognizant application program(s). In some embodiments, the SD card 14 isutilized to store data for later upload to the Internet, or to storecode to allow other functionality performed by the program. A systemunit 1 includes appropriate connection of all components, such as bysoldering. Configuration of a system unit 1 also includes arrangement ofcomponents to fit inside an appropriately-sized container or housing 41that is compatible with an intended recipient object.

The Spark Core microcontroller 11 allows a wide range of codingpossibilities, including uploading information to the Internet, hostinga Web server, and executing code resident on a memory portion of card14. The uses for system unit 1 are limited only by the storagecapabilities of unit 1, and the ingenuity and skill of the developer(s).

Additional application databases for programming system unit 1 can becontained on a Website or external physical database. An externaldatabase allows users to create solutions to meet their needs withoutburdening every system unit 1 with applications for developing ormodifying programming. This embodiment also makes applications availableto a wider audience in a central repository such as a Website.

In some embodiments, the central repository can be an application store(“app store”), and functions as a digital distribution platform ofapplications to users. An online embodiment of an app store allows usersto browse different app categories and types, and to view informationregarding the apps, such as description of designed functionality,reviews, and rating. Users can also acquire these apps from the appstore, either for no cost or for purchase. The app store can includefunctionality to assist in the installation of the app, such as removingprevious versions of the app, and in some embodiments help assistagainst infestation of unit 1 by malware. User designed apps andprograms can also be uploaded to the app store for distribution to thirdparties.

With reference to FIG. 1, in some embodiments, microcontroller 11comprises a Spark Core or an Arduino microcontroller; and unit 1 furthercomprises a component 21 for Wi-Fi capability such as a TexasInstruments CC3000; a component 22 for GPS capability such as onecomprising a GP-635T GPS antenna 12; a small memory storage unitincorporated in a Micro SD card 14, which may be removable for accessingdata on the memory if necessary; and a battery power source 15, whichrenders unit 1 portable. In some embodiments, other components can beadded, replaced, or omitted as applicable, such as a cellularcommunications component 23, indicator lights (not illustrated), aBluetooth™ component 24, accelerometers 25, and/or a NFC component (notillustrated). FIG. 2 illustrates how components, such as a Bluetooth™component 24 and accelerometers 25, may be connected directly tomicrocontroller 11 in addition to basic system unit 1 componentspreviously mentioned. Components may be connected to each other.Components may be in a series or parallel configuration with respect toeach other or to the microcontroller 11. The components together have asmall form factor (size), enhancing the portability of system unit 1.The form factor is small enough such that system unit 1 can be hiddenfrom view when integrated into larger structures, i.e., unit 1 is smallenough to fit inside a collar worn by a cat or dog, or fit inside or beattached to a watch band, hat, or lanyard worn by a human person.

Methods for accessing information from the memory storage unit 14 aregenerally through wireless means; however, direct physical access to thememory storage unit 14 is also an option in certain embodiments.Physical access can be achieved by removing the memory storage unit 14from unit 1, and inserting unit 14 into an appropriate memory cardreader to access the data contained on the memory card 14 if wirelessaccess is inoperable or otherwise not employed. For wireless access, theWi-Fi component 21 can be used. In some embodiments, system unit 1 caninclude alternative wireless communication protocols or componentsallowing access to data resident on memory storage unit 14. Eachwireless access method can allow for data transfer to and from thesystem unit 1 to external repositories, such as the Internet, externalcomputers, or external physical databases such as hard drives. In someembodiments, data can be transmitted by Wi-Fi component 21 using VirtualPrivate Networks. Wireless communication methods can also be used toaccess system unit 1 components other than unit 14, including themicrocontroller 11, GPS component 22, and any other components that arepart of system unit 1. This allows for reprogramming of components,retrieving data from sensors, and sending data to any of the componentscontained within system unit 1. These physical and wirelesscommunications means can also be used to send commands to system unit 1to initiate testing sequences or to change settings in system unit 1.System unit 1 components containing wireless capabilities can alsocommunicate with each other within a single system unit 1. In someembodiments, a system unit 1 can communicate with other system units 1through wireless communications means to relay instructions, programs,or data to between or among system units 1.

Microcontroller 11 can be programmed to perform multiple functions.Instructions contained in memory storage unit 14 can be executed eachtime microcontroller 11 accesses memory storage unit 14. Instructionscan also be executed when access is initiated by another program, orupon the occurrence of a pre-specified event. Examples of events thatcan trigger the execution of programs include passage of a preset periodof time, movement of a set distance, and/or a sensor activation.Programs include hardwired applications, software, and firmwarecontained on microcontroller 11, memory storage unit 14, or other systemunit 1 components.

A feature of this invention is the ease with which it can bereprogrammed by a user. In some embodiments, users with sufficientknowledge can create customized code to reprogram a system unit 1 byconventional programming means. In other embodiments, a system unit 1can be connected to a software module that allows for selection ofpre-programmed applications or application components to add, remove, ormodify specific functionality, or to build new functionality. Thisembodiment allows people without extensive programming capabilities todevelop customized programs to meet their own needs. The applicationscan be contained in a central location, such as a Webserver or databasethat users can connect to through proprietary software or through aWebsite interface. The proprietary software can be an app store program.Additionally, applications can be provided to the users by othermethods, such as by e-mail or preprogrammed memory storage units 14. Acentral database can be enabled to allow users to upload their ownapplications to share with other users.

An exemplary embodiment of steps for programming a system unit 1 areillustrated in FIG. 3. A user who purchases 31 a system unit 1 registers32 the unit 1 on a product registration Website. The user places 33 theunit 1 in a state where the product is ready to flash (install and alertthe user) to new programming. This can be a manual process, or unit 1can be programmed to have an automatic setting contained in themicrocontroller 11 or data storage unit 14 that triggers any time thesystem unit 1 is connected 34 to the product registration Website. Onthe Website, database, or app store, the user is presented withdifferent software, applications, and/or application add-ons to choosefrom 35. Selection can be by any conventional means used to selectoptions on a Website, including drag and drop, selection from a checklist, and drop down menus. The user chooses 35 appropriate software toflash to the product 1. The user selects 36 to flash to the newsoftware. The system unit 1 receives 37 the new programming, installsit, and reboots unit 1, which is now ready for use.

If a user wishes to re-flash to a different software, applications, orpurpose, the steps are near identical to those previously mentioned andoutlined in FIG. 3. The user simply connects to the database or Websitefrom where he or she wishes to obtain the application, selects theapplication, and flashes the new application to system unit 1.

A user may follow the exemplary embodiment of FIG. 4 for creating andflashing a user created program to a system unit 1. To create customsoftware or code, a product Website or server with standard selectionprocesses used on a Website can be used for selecting applicationfeatures to be combined to create a program. Traditional programmingmethods can be used to create a program or desired features if thosefeatures are not available on the Website.

Alternative to using a development section on the Website, if aprogrammer has already created code, the programmer can simply copy andpaste, or otherwise upload, the code to the Website through normalmethods. Any time a user desires to use the custom created code, theuser can do so through the same method as any accessing or reprogrammingto an application or software already resident on the product Website.

Another method for loading custom programming onto a system unit 1 is byloading a programming interface on a local computer. This method allowsfor reprogramming of a system unit 1 when connections to the productWebsite cannot be established. In this instance, the user does notestablish a connection to the product Website, but establishes aconnection between the system unit 1 and the location where theapplication to be flashed to is resident. This can be established byprogramming the new application, or by previously downloading thedesired applications to the local computer. Transfer of applicationsfrom the local computer to the system unit 1 can be achieved throughphysical connection, loading the applications onto memory card 14 andinserting it in system unit 1, or by wireless connection to system unit1.

An important function of the present invention, outlined in FIG. 5, isto conduct scanning for Wi-Fi signals and Wi-Fi access points. When theWi-Fi scanning procedure is initiated, the Wi-Fi component 21 isenabled, assuming component 21 has not already been enabled by anotherprogram. Microcontroller 11 obtains a GPS lock on a Wi-Fi signal bymeans of GPS antenna 12, and records the time when a GPS lock isobtained. If a GPS lock cannot be obtained, system unit 1 can recordeach attempt and any ancillary pertinent information. Pertinentinformation can include date and time of each attempt; and alternativelocation information, such as locations derived from accelerometers 25to determine distances that unit 1 has traveled from the previous GPSlock, a known location, or locations computed by other means, includingtriangulation from transmitters such as known Wi-Fi access points and/orcellular towers. System unit 1 can be programmed to either skip to step4 of FIG. 5, or to continue with step 3 of FIG. 5 after a specificnumber of failed attempts to obtain a GPS lock.

During the scanning procedure, Wi-Fi component 21 scans the localgeographical area to determine if any Wi-Fi access points are withinrange of system unit 1 (step 3 of FIG. 5). This determination is madewhen component 21 receives a radio signal that matches the type ofsignal that is associated with a Wi-Fi access point. Any informationthat is detected, plus the corresponding GPS lock information, isrecorded, e.g., within memory unit 14. If no radio signals correspondingto Wi-Fi access points are detected by component 21, this fact isrecorded. When one or more Wi-Fi signals are detected, unit 14 recordsthe number of SSIDs detected, plus additional pertinent information,including the SSID, BSSID, signal strength as measured at thegeographical location of system unit 1, and the encryption algorithm ifany, for each Wi-Fi signal detected. Once the scan is complete, Wi-Ficomponent 21 is disabled, whereupon microcontroller 11 can be placedinto a sleep state for a specified period of time to conserve energy,assuming that microcontroller 11 doesn't have any other pending tasks toperform. Once a specific period of time has passed, the procedure can berun automatically again.

The Wi-Fi scanning procedure can be set to run at different timeintervals, which intervals may be preselected, and/or be triggered byspecific preselected events. If no GPS lock is obtained (regardless ifstep 3 of FIG. 5 was skipped) when the system reaches step 5 of FIG. 5,microcontroller 11 can be placed into sleep mode for a shorter timeperiod than if a GPS lock was obtained. Alternatively, if anotherprogram was active when the Wi-Fi scanning procedure was initiated,system unit 1 can be returned to the state it was in prior to initiationof the scanning procedure, including the state of microcontroller 11 andWi-Fi component 21. The Wi-Fi scanning procedure can be conducted asnormal if no GPS lock is obtained, proceeding with step 3 of FIG. 5, andupon reaching step 4 can continue to attempt to obtain a GPS lock. TheWi-Fi scanning procedure can also be used in combination with otherprocedures, such as the data upload procedure described in FIG. 6.

System unit 1, upon completing step 3 of FIG. 5, can then initiate thedata upload procedure of FIG. 6. Certain steps can be skipped, such asstep 1 of FIG. 6. The data upload procedure can begin with step 2 orwith step 3(a)(i) of FIG. 6 if an open or known Wi-Fi access point iswithin range of unit 1 during the Wi-Fi scanning procedure.Microcontroller 11 can then continue to complete some or all of the dataupload procedure steps, and return to the Wi-Fi scanning procedure, orto another program.

FIG. 6 illustrates an exemplary method in which a system unit 1 containsa programmed function for uploading data to a repository not resident onsystem unit 1, through a Wi-Fi connection. This function can be repeatedperiodically or triggered by preselected events. In this embodiment,system unit 1 contains Wi-Fi capability 21 and programming for detectingand connecting to Wi-Fi access points that system unit 1 detects.Generally, the default mode is that Wi-Fi connectivity is turned off toconserve power; this, however, is not mandatory. System unit 1 attemptsto obtain a GPS lock upon initiation of the upload process. If a GPSlock is not initially obtained, system unit 1 can re-attempt to obtain aGPS lock. Programming can set a preselected number of allowableunsuccessful attempts, after which system unit 1 aborts the uploadprocedure. System unit 1 can record the fact that it was unable toexecute the upload procedure, and further record any pertinentinformation regarding the failed attempt(s). The next time that systemunit 1 completes an upload procedure, it can be programmed to providethe information regarding any of the previous failed upload attempts, inaddition to the current information to be uploaded at that time.

Alternatively, if system unit 1 cannot obtain a GPS lock, unit 1 can beprogrammed to continue with the upload procedure, moving to step 3 ofFIG. 6. The microcontroller 11 initiates the Wi-Fi capability. Wi-Ficomponent 21 scans for any Wi-Fi signals and access points withingeographical range of the system unit 1. If detected, system unit 1 canthen connect to any open or known access point to conduct the upload.“Known access points” are access points for which system unit 1 hasaccess credentials. Once a Wi-Fi connection is established,microcontroller 11 reads the data to be uploaded from memory storageunit 14 or other components, and uploads the data to the non-residentstorage area or Website. If a GPS lock was not established, system unit1 can provide any available pertinent information and indicate it wasunable to establish a GPS lock. Once the upload is complete, or if noopen or known Wi-Fi access points are in range, system unit 1 cancontinue to step 4 of FIG. 6, disable the Wi-Fi capability, continue tostep 5 of FIG. 6, and place microcontroller 11 into sleep mode toconserve power until another upload procedure or function is initiated.

As an alternative or additional step, if system unit 1 is unable toestablish a Wi-Fi connection, system unit 1 can attempt to establishcommunications connection using another component or protocol, such acellular (telephone) connection, to upload data to the Internet. Changesto the procedure contained in FIG. 6 can include changes to steps 3 and4 such that the specific protocol component was enabled. as opposed toWi-Fi component 21. The procedure outlined in FIG. 6 can be repeated asmany times or as often as needed.

Certain steps of the exemplary procedures described herein can beomitted for any reason. For example, microcontroller 11 need not beplaced into sleep state upon completion of a data upload. Alternative tostep 5 in FIG. 6, if another program was utilizing microcontroller 11prior to the upload procedure being initiated, system unit 1 can returnmicrocontroller 11 to the state it was in prior to initiation of theupload procedure. System unit 1 can also be designed to initiate anaction to upload data based upon pre-selected events instead of specifictime periods. In this embodiment, microcontroller 11 can optionally beplaced into sleep mode to conserve power while sensors continue tofunction or to allow microcontroller 11 to continue in a normalfunctional state while executing other programs. Sensors that do notrequire the function of microcontroller 11 can include sensors such as athermometer which can open or close a circuit based upon changes intemperature. This circuit opening or closing can initiate thefunctioning of microcontroller 11 and/or trigger other programs toexecute. Using small mechanical components can aid in extending theuseful life of the power supply 15 while adding additional functionalityto the system 1.

A system unit 1 can also download data in addition to uploading data.When an upload connection is established, the connection can be atwo-way connection to allow data to be communicated back to the systemunit 1. When a communication component or protocol is active, a systemunit 1 can be communicated to through the appropriate means. This caninclude automatic download of instructions each time system unit 1detects an open or known Wi-Fi connection, a Bluetooth™ connection, orother wireless data connection. Alternatively, communication componentson system unit 1 can be activated remotely. A system unit 1 thatincludes cellular communications capabilities, or other communicationscapabilities that include a standby receive mode, can be in such a stateto await incoming communication requests that activate the pertinentcomponent and the system unit 1. When a connection is established,system unit 1 can receive data, programming, or control signals that aredownloaded to system unit 1. Establishing an incoming communicationrequest can also activate other components, functions, or procedures.Activated functions or procedures can include the contacted system unit1 to request a GPS lock, record the time, date, and location of systemunit 1 when the incoming communication request is received, and/oractivate a data upload via the same method or different method as theincoming request.

System units 1 can interact with each other. A system unit 1 can beprogrammed to detect other system units 1 and establish communicationchannels or execute other functions upon detection of another systemunit 1. The various system units 1 can interact and exchange informationbetween or among each other, and/or notify the corresponding user(s),and as such units 1 are not limited to interacting with external,non-system third party devices. Information that can be communicatedbetween or among system units 1 can include how close two units 1 are toeach other, the relative bearings of the units 1, relative motion of theunits 1, and/or data contained on a system unit 1. The exchange ofinformation can be programmed to be unidirectional with respect to somesets of information and bi-directional with respect to otherinformation. System units 1 can be programmed with hierarchicalrelationships, such that specific units 1 are authorized to request orprovide certain information, and others 1 are authorized to provideresponses to the requests.

FIG. 7 illustrates an exemplary three-tier configuration of system units1. The top tier comprises a senior system unit X, and the middle tiercomprises two area system units: Y and Z. Each area system unit 1 canhave one or more subordinate system units 1. At times, an area unit 1may have no subordinate units 1 within its area. When a system unit 1enters said area or comes within a preselected proximity to the area orto a unit 1 in said area, one or more subordinate units 1 providepreprogrammed information, or information requested by a requesting areaunit 1, to the designated recipient area unit 1. Area units 1 cancommunicate with other area units 1 or with units 1 higher in thehierarchy. Alternative configurations can be used, depending onpreselected requirements. Multiple components can be used to exchangeinformation, and information can be sent by one method or medium andreceived by the same or different method or medium. Each microcontroller11 can select which communications protocol and components to use.Communication means can be based on energy efficiency, security needs,or whatever means are currently operational if one or more unit 1 is notfunctioning properly. For example, data can be transmitted via Wi-Fi atlong distances, but when in closer proximity, Bluetooth™ or NFC can beused instead. Alternatively, a microcontroller 11 can be programmed tocommunicate specific data or to execute specific programs only whenspecific communication methodologies are available.

Communication between or among units 1 can be used as a relay to reachunits 1 that other methods cannot use. If a communication attempt ismade to a specific unit 1, for example system unit 1 Z in FIG. 8, butunit Z cannot be reached directly, a request can be sent to other units1 in an area that system unit 1 Z was last known to be in. These units 1can then attempt to contact system unit 1 Z through the same oralternative communications methods. An example includes establishing acellular data connection from database V to system units W, X, and Ywhich are near the last known location of system unit 1 Z. Each of theseunits 1 then attempts to reach system unit 1 Z via Wi-Fi. If anothersystem unit, system unit Y, establishes connection with system unit 1 Z,system unit Y can act as a relay for direct communication betweendatabase V and system unit Z. Similarly, a location request for a unit 1can be sent out, and units 1 that can communicate with a unit 1 unableto receive direct communication from the requesting unit 1 can forwardthe request(s) and communication responses, or can triangulate a unit 1if they are able communicate with it.

FIG. 9 and FIG. 10 demonstrate similar procedures for using system units1 to communicate with other system units 1 or third party devices toaccess information. FIG. 9 demonstrates how a Website can be loaded ontoa system unit 1; users can then access the data on the portal systemunit 1. This allows the system unit 1 to act as a Wi-Fi access pointwith one or more Websites contained on the system unit 1. As othersystem units 1 that are programmed to connect to the portal system unit1 come within a pre-defined geographical range of the portal system unit1, a connection between the units 1 can be established. This connectioncan be established automatically or with input from a user. Alternativedevices with Wi-Fi, Bluetooth™, NFC, and/or other wireless connectioncapabilities, such as smart phones or tablets, can also be used toconnect to the portal unit 1. During connection establishment, theportal unit 1 can optionally require a password or user credentials toallow a connection. Alternatively, a portal unit 1 can allow connectionwithout requiring any credentials. Once a connection is established, theportal unit 1 can request specific information, such as an e-mailaddress, user ID, or other information to allow access to the Websitecontained within the system unit 1. Depending on the contact informationprovided, such as an e-mail address or telephone number, the system unit1 can provide different information. If the contact information provideddoes not match a valid format, the contact information can bere-requested or access can be denied. Once valid information isprovided, access to data on the Website can be provided. If the contactinformation matches that of a pre-registered user or repeat user, theportal unit 1 can provide one set of information; whereas, if the useris a new user, the portal unit 1 provides different information or canrequest additional information prior to allowing full access to the newuser. Information that is provided by the portal unit 1 to a user canalso depend on the order that the user connects to the portal device 1.For example, the first ten users can receive a certain set of data orcoupons, and all other users receive a different data or coupon set.

If there is no activity within a set period of time, or the devices 1move too far apart, the connection(s) can be timed out. Multipleconnections can exist between a portal unit 1 and other system units 1or devices at the same time.

FIG. 10 demonstrates a function similar to FIG. 9; however, in FIG. 10,the majority of the data is stored at a pre-configured offsite databaseor Website. The system units 1 provide a relay function for access tothe offsite database. The database is pre-configured to perform certainactions. The relay system units 1 are enabled in a similar fashion asdiscussed in for FIG. 9, with the additional step of establishing aconnection to the offsite database. Alternatively, the connection to theoffsite database can be established each time a device connects to arelay system unit 1 and the device or relay system unit 1 requests datafrom the offsite database. In FIG. 10, the data to be provided isgenerally located on the offsite server. Some data may be resident onthe relay system unit 1. The relay system unit 1 may request informationfrom the device connecting to the relay system unit 1 prior to providingaccess to the offsite database. Using an external database andconnections to it allows for increased data storage and conserving poweron relay system units 1. In this configuration, a relay system unit 1can receive data from a device, save the data to the relay system unit1, and upload saved data periodically to the offsite database in bulk.Alternatively, a relay system unit 1 can work as a direct relay forcommunication between a system unit 1 or other device the relay systemunit 1 is connected to, and through it the offsite database, system unit1, or other device.

System units 1 can be programmed to execute functions based ongeographical location. A microcontroller 11 can be set active inside oroutside of a geofenced area. Geofenced areas can be programmed to asystem unit 1 and saved on memory storage unit 14. The geofenced areacan be established or maintained through a GPS unit or through otherlocation determination, such as through accelerometers 25, Wi-Ficomponent 21, cellular component 23, or other components containedwithin system unit 1. A geofenced area can also be programmed in acentral database that informs system units 1 if they are within ageofenced area when a system unit 1 contacts the central database. Oncea system unit 1 enters or leaves a geofenced area, the system unit 1 canexecute one or more functions or continue to execute functions until theunit 1 leaves the geofenced area. Alternatively, the system unit 1 canbe set to stop executing functions based on a geofenced area. Based onthe location of a system unit 1, the unit 1 can change from one functionto another. An example is where a system unit 1 within a specificgeofenced area operates under FIG. 10 as a relay unit 1, but onceoutside of the geofenced area, changes to operate as a portal unit 1 asillustrated by FIG. 9 or attempts to upload data under guidelinescontained in FIG. 6.

A system unit 1 can be used as a navigation tool and for locating items.Within a set area such as a geofenced area that outlines a store or ashopping center, GPS location or facility-based beaconing signal devicescan be used to assist in tracking the movements of a system unit 1. Thefacility-based beaconing system can be a Wi-Fi network that covers thedesired area. As a system unit 1 enters this area, the system unit 1 canautomatically connect to the Wi-Fi network as a trusted or open Wi-Finetwork if the system unit 1 is running any other application. Systemunit 1 can also have an application loaded that recognizes theparticular Wi-Fi network within the geofenced area and continues to runan application for the specific location. This can include reporting thelocation of the system unit 1 to the Wi-Fi network it is connected to,in addition to the location reporting the system unit 1 conducts for theuser. The Wi-Fi network can also activate routines which triggeradvertisements or directions to be provided to the user of the systemunit 1 as he or she moves through the area covered by the Wi-Fi network.These routines can be triggered when a system unit 1 comes within acertain distance of a sign. For example, the sign can display a messageto the system user. Alternatively, as the system unit 1 approachesvarious preselected locations, the system unit 1 can notify the user ofa direction to follow, such as to turn right.

A system unit 1 can also provide feedback information to the Wi-Finetwork upon reaching certain preselected locations. The location can bea specific fixed location, or the variable location of an object forwhich the system unit 1 is near. Upon such an occurrence, unit 1 canprovide certain information to its user. For example, this informationcan be an advertisement as a user proceeds within a set distance of ashelf with a product on it. Alternatively, if the user is in a museum,as he or she approaches an exhibit, the system unit 1 can link toinformation pertinent to the exhibit and provide this information to theuser. In either case, the system unit 1 can accomplish the task throughvarious means. One method is for the system unit 1 to have a speakercomponent that it activates to notify the user by sound. Alternatively,a visual display, such as scrolling text or a screen, can provide theinformation to the user. The system unit 1 can connect with thefacility-based system to trigger displays, ticket/coupon dispensers,lights, or other devices as the system unit 1 approaches them. As thesystem unit 1 moves away from these locations, the facility-based systemcan be set to take other actions, such as turn off the lights, or removethe display of the coupons.

A central database can track the location and movements of each systemunit 1. This feature can be used in combination with applications todetermine the patterns of a system unit 1 user. This can allow targetedadvertising to the user. In an example where an application for agrocery list is used by a system user to help find items in a store, theapplication can link with the store's facility-based system in order toprovide the location information of the items sought. The items on thegrocery list are then provided to the facility-based system, which canoffer advertisements for store branded alternatives for the same items,in addition to providing directions to where the listed items arelocated. A database can compile information to include where each systemunit 1 user goes on each trip and how often trips are made. Thisinformation can be used by advertisers to develop profiles to helpbetter advertise to customers, or by retailers to help rearrangeproducts to help increase sales of products.

Additional peripheral devices such as drones, robots, advertisingbanners, radio controlled vehicles, animal collars, lanyards, or IDholders can be available for purchase such that the microcontroller 11can be flashed into the appropriate configuration, placed into one ofthose peripheral devices, and be able to control those peripheraldevices using the flashed configuration. Specialized carriers such asclothing, hats, or belts can also be available and can be fullyflashable as well. In providing the centralized location ofapplications, specialized form factors, and the specific peripherals, amicrocontroller 11 can provide a myriad of uses from one solution.

EXEMPLARY EMBODIMENTS

System unit 1 can be used for numerous different user categories, suchas pet owners, first responders, and military personnel; and forconferences, advertising, agricultural uses, and in smart clothingSystem unit 1 is an easily used IoT device. Exemplary embodiments ofsystem unit 1 include: uploading recorded data to the Internet,including text, pictures, music, and files; downloading data from theInternet; performing network security functions, such as scanning aparticular network for vulnerabilities or unauthorized hosts or users;tracking certain objects, including pets and personal property;performing certain tasks when in the presence of a known Wi-Fi hotspot(access point), such as uploading current coordinates, or posting tosocial media; attaching LEDs to a pet collar, and having microcontroller11 turn those LEDs on and off in a pattern determined by the programmer.

One embodiment includes a mobile scanning device that searches for Wi-Fienabled devices. In this embodiment, system unit 1 can be configured tocollect information such as date, time, latitude, and longitude aboutwireless signals and access points, including SSID, BSSID, signalstrength, and any encryption algorithm that is used. each time a Wi-Fisignal is detected. For example, unit 1 can be integrated into a hatworn by a security officer, or on the collar of a guard dog, allowingfor surreptitious collection of this data as the guard conducts hisrounds. A penetration tester can also use this embodiment to conductsecurity penetration testing of a network, by discretely providing alanyard that houses a system unit 1 to employees or guests, without needto provide specific further instructions to the wearers.

In another embodiment, unit 1 can be used for tracking a mobile targetusing wireless connections. When the unit 1 comes across a known or openWi-Fi hotspot, unit 1 connects to that hotspot and uploads its currentGPS location, previously recorded GPS data and time information, and/orother data to the Internet, utilizing a pre-configured Website addressand credentials. If unit 1 includes cellular connection capability, unit1 can periodically post the location of itself, or other pertinent data,to the Internet through this communications medium. A pet owner orresearcher can then retrieve the information. The information can thenbe utilized by a software program to graphically display the activitiesof the target. This embodiment can include a Website where the pet ownercan download new software programs and place those programs onto unit 1to change the behavior of unit 1.

In yet another embodiment, a system unit 1 can be used to track thelocation of luggage, and to post that information to the Internet. Insome embodiments of the luggage tracker example, a system unit 1 cancontain accelerometers 25 to monitor how the luggage has been handled.The system unit 1 can periodically obtain a GPS lock and attempt toconnect to a known or open Wi-Fi access point. Once access to theInternet is gained, unit 1 can utilize a preconfigured Website or socialmedia credentials to post the current location of the luggage, which caninclude GPS location, or provide an airport location if geofencing isenabled. A user can then utilize an Internet-capable device to log in tothe Website or social media to check on the current location of theluggage.

A further embodiment includes a first system unit 1 tracking anothersystem unit 1. A group of people can attach a system unit 1 to one ofthe members of the group (called the “rabbit”) to provide locationinformation to other system units 1 (called “foxes”) that are part ofthe group. The rabbit unit 1 can utilize its GPS component 22 and/oraccelerometer 25 location tracking capabilities to provide updates ofits location at specific time intervals, or upon entering or leavingpreselected areas. It then becomes the job of the foxes 1 to attempt tocatch the rabbit 1 at a particular location, or to predict the locationthat the rabbit 1 will frequent next. If a fox 1 fails to catch therabbit 1, the foxes 1 can be required to perform a penalty action priorto continuing the chase. In this situation, the system unit 1 used bythe rabbit 1 can be set to change how often said unit 1 reportsinformation to the chasing foxes 1, based upon how close the foxes 1 areto the rabbit 1.

In another embodiment of the present invention, system units 1 can beset to provide or gather information when each unit 1 establishes acommunication link with another system unit 1 or with a third partydevice, such as a smart phone, tablet, or computer. A productadvertising firm or company can host an event to promote their productusing this capability. Prior to the event, the promoting companyprovides each of their representatives with a system unit 1 integratedinto a lanyard to be worn by the representative. The lanyard contains acustomized, pre-configured Website in the memory storage unit 14 of itsunit 1. Using this solution, the firm can create customized Websitescontaining coupons, pictures, and promotional material stored locally.This helps protect proprietary material and eases control anddistribution of the lanyards to the appropriate representatives. Thisalso allows each of the representatives to have customized content indifferent locations at the same event. The content accessed by eachcustomer using different mediums can have different content on eachmedium. In this embodiment, the system units 1 used by the advertisersmay require pre-configuration of the Website to be displayed.

In another embodiment where system units 1 provide and/or gatherinformation, each system unit 1 communicates with a pre-configureddatabase that is hosted offsite. Each system unit 1 can communicate andpull information from the offsite database. For example, at a job fair,the information can include job listings, documentation required foreach position, and hiring manager contact information. As applicantsvisit employer booths, they can view company information and job lists,similar to how a user can view promotional advertising information inthe previous example. The system units 1 can also communicateinformation to the database, such as accepting an applicant resume andrelated information and forwarding it to the database. The applicantscan then provide their contact information and, if they choose,additional data, through their system units 1 when they meet with thecognizant representative. In this embodiment, a system unit 1 thataccepts information from the user can be set to record what informationit received, when and where the information was received, and whichpeople wore the unit 1; and retain the information on the system unit 1and/or immediately forward it to the offsite database. This techniquecan be used to compare effectiveness of recruiters or representatives.Similarly, this embodiment can be used to build statistics on salesrepresentatives, what they sell, and when sales are made; and tocorrelate that data with data received from the customers, withouthaving to ask the customer to provide information verbally or throughother methods.

In a further embodiment, several system units 1 are programmed tomaintain a specific distance from each other, and if the distance isexceeded, a unit 1 that is removed from the group executes specificinstructions. This embodiment can be used by people in a crowded eventattempting to find their group if they are separated from the group.Units 1 can be set to help direct users to each other, or to a specifiedlocation. This embodiment can also be used to maintain an appropriateseparation between representatives at events. Alternatively, thisembodiment can be used for tracking animals in a herd, or where oneanimal strays away from the herd. When an animal strays, a program canbe executed by a system unit 1 sending a request that activates a droneoutfitted with its own system unit 1. The drone then tracks down andfollows the wayward animal, and can be programmed to steer the animalback towards the herd, such as by activating a shock collar worn by theanimal if the animal continues to move away from the herd.

In another embodiment, several system units 1 can be utilized at apublic event, such as a fair, where visitors are outfitted in shirts orother garments that have units 1 embedded in them. Rather than carryingtickets for events, such as ride rides or games, the unit 1 can beregistered with the facility, such as an amusement park, upon entry, andassociated with a credit card or other payment account. When the visitorenters a ride, the attendant scans the shirt of the visitor to allow thevisitor to gain entry. This allows the visitors to use the facilitieswithout having to keep track of tickets or cards.

An embodiment of the present invention is what we call the 360DopeScope,or DopeScope 40 for short, and is depicted in FIGS. 11 and 12. DopeScope40 is a portable, user-programmable wireless scanning and networkpenetration testing device. The base device 40 comprises a 2.4 Ghztransceiving radio 47 and microcontroller 11 with a flexible IO carrierboard 45 containing common interfaces, such as i2c and SPI. Otherfrequencies can be used, including but not limited to 5 Ghz andBluetooth frequencies. DopeScope 40 is designed to run either poweredoff of a Universal Serial Bus (USB) 46, or from a lithium polymer (lipo)battery 15. The USB interface 46 can be used both for recharging thebattery 15 and for programming the device 40. Digital-to-analogconverters, analog-to-digital converters, modulators, and demodulatorscan be used to convert the digital signals within the microcontroller 11to analog signals used by the radio 47, and vice versa.

DopeScope comprises a housing 41 that stores DopeScope 40 includingbattery 15, antenna corner reflector (RF mirror) 44, small OLED display43, and short focal length lens 42. The corner reflector 44 increasesthe device's front-to-back ratio: device 40's reception of wirelesssignals in front of device 40 are enhanced, while reception of wirelesssignals behind device 40 are attenuated. Display 43 offers feedback tothe human user, and lens 42 allows the user to view objects from closeproximity ˜45 mm. The small size of the components allows for DopeScope40 to function as a monocular device. In this case, the viewer seesinformation about wireless devices that are relatively “in front of”him/her. In other embodiments, other sizes and housings provide the samefunctionality, but in ruggedized hand held cases and wearable heads updisplays.

Software

Device 40 is programmable through USB interface 46, and contains anumber of environments for developing executable code. The codedeveloped has access to most functions of the radio 47, including rawinjection of 802.11 frames and the reception of all frames transmittedon a given channel, as well as the ability to run higher level services,such as hosting Web servers and clients. Currently available firmwarefor device 40 provides for the detection of all nearby broadcastingaccess points, rogue access points, and other transmitting devices(access points and networking clients).

Expansion

The hardware design of DopeScope 40 allows for user expansion through acarrier board 45 that provides common interfaces for external devices.These interfaces provide access to i2c, SPI, software UART, and a numberof General Purpose Input and Output (GPIO) pins. The pins are used incombination for interfacing with external expansion boards. Theexpansion boards provide a convenient interface to external peripherals,such as Secure Digital and Micro Secure Digital media, compass, GPS,user input, haptic feedback, and other RF devices. The specificationsfor these boards are made available to the public, enhancing the valueof the product 40. Additionally, many primary use boards have beendeveloped by WarCollar Industries, LLC, the Applicant and assignee ofthe present invention.

Board Design

In some embodiments, the main carrier board 43 comprises four functionalunits. The primary functional unit is the core computing and RF section11, 47. An example of a suitable core computing and RF section 11, 47 isan ESP8266 WiFi SOM plus ancillary passive components for configurationand communication. The second functional unit is a USB to UART bridgethat provides the user with a programming interface to the device 40through the standard USB interface 46. The third functional unit is thecharging circuitry. This uses the 5v source from the USB interface 46 toproperly charge the lithium polymer battery 15 enclosed within thehousing 41. Additionally, the third functional unit has under-voltageprotection to prevent the battery 15 from draining below the criticalthreshold for the particular chemistry of the battery 15. The fourth andfinal functional unit is the set of external peripheral interfaces. Thisfourth functional unit provides an interface to the OLED screen 43 viai2c, as well as providing the user with interfaces for i2c, SPI, andgeneral purpose I/O.

Case Design

To make the unit 40 user friendly, the DopeScope 40 is housed in aconvenient portable case 41. The main carrier board 43 sits toward theback of the case 41, with corner reflector 44 positioned to focus theincoming RF that is arriving in front (to the right in FIGS. 11 and 12)of the user. The display screen 43 is positioned so that lens 42 is atthe proper focal length to focus on the screen 43, and the battery 15and user expansion headers are situated for easy access compartmentwithin case 41.

All of the components described herein can be implemented in software,firmware, or hardware, or any combination thereof. The systems andmethods described herein can be implemented using one or more computingdevices, which may or may not be physically or logically separate fromeach other. The methods may be performed by components arranged aseither on-premise hardware, on-premise virtual systems, orhosted-private instances. Additionally, various aspects of the methodsdescribed herein may be combined or merged into other functions. Examplecomputerized systems for implementing the invention are illustrated inFIG. 1 and FIG. 2. A microprocessor or microcontroller 11 can beconfigured to particularly perform some or all of the method stepsdescribed herein. In some embodiments, the method can be partially orfully automated by one or more computers or processors. In someembodiments, the illustrated system elements can be combined into asingle hardware device or separated into multiple hardware devices. Ifmultiple hardware devices are used, the hardware devices can bephysically located proximate to or remote from each other. Theembodiments of the methods described and illustrated are intended to beillustrative and not to be limiting. For example, some or all of thesteps of the methods can be combined, rearranged, and/or omitted indifferent embodiments.

The system may include one or more processors. The processor(s) may beconnected to a communication infrastructure, such as but not limited to,a communications bus, cross-over bar, network, etc. The processes andprocessors need not be located at the same physical locations. In otherwords, processes can be executed at one or more geographically distantprocessors, over, for example, a LAN or WAN connection. Computingdevices may include a display interface that may forward graphics, text,and other data from the communication infrastructure for display on adisplay unit.

The computing system may also include, but not be limited to, a mainmemory, random access memory (RAM), and a secondary memory, etc. Thesecondary memory may include, for example, a hard disk drive and/or aremovable storage drive, such as a compact disk drive CD-ROM, etc. Theremovable storage drive may read from and/or write to a removablestorage unit. As may be appreciated, the removable storage unit mayinclude a computer usable storage medium having stored therein computersoftware and/or data. In some embodiments, a machine-accessible mediummay refer to any storage device used for storing data accessible by acomputer.

The processor may also include, or be operatively coupled to communicatewith, one or more data storage devices for storing data. Such datastorage devices can include, as non-limiting examples, magnetic disks(including internal hard disks and removable disks), magneto-opticaldisks, optical disks, read-only memory, random access memory, and/orflash storage. Storage devices suitable for tangibly embodying computerprogram instructions and data can also include all forms of non-volatilememory, including, for example, semiconductor memory devices, such asEPROM, EEPROM, and flash memory devices; magnetic disks such as internalhard disks; and removable disks. The processor and the memory can besupplemented by, or incorporated in, ASICs (application-specificintegrated circuits).

The processing system can be in communication with a computerized datastorage system. The data storage system can include a non-relational orrelational data store, such as a MySQL™ or other relational database.Other physical and logical database types can be used. The data storemay be a database server, such as Microsoft SQL Server™, Oracle™, IBMDB2™, SQLITE™, or any other database software, relational or otherwise.The data store may store the information by identifying syntactical tagsand any information required to operate on syntactical tags. In someembodiments, the processing system may use object-oriented programmingand may store data in objects. In these embodiments, the processingsystem may use an object-relational mapper (ORM) to store the dataobjects in a relational database. The systems and methods describedherein can be implemented using any number of physical data models. Inone example embodiment, an RDBMS can be used. In those embodiments,tables in the RDBMS can include columns that represent coordinates. Inthe case of economic systems, data representing companies, products,etc. can be stored in tables in the RDBMS. The tables can havepre-defined relationships between them. The tables can also haveadjuncts associated with the coordinates.

In alternative exemplary embodiments, secondary memory may include othersimilar devices for allowing computer programs or other instructions tobe loaded into a computer system. Such devices may include, for example,a removable storage unit and an interface. Examples of such may includea program cartridge and cartridge interface (such as, e.g., but notlimited to, those found in video game devices), a removable memory chip(such as, e.g., but not limited to, an erasable programmable read onlymemory (EPROM), or programmable read only memory (PROM) and associatedsocket, and other removable storage units and interfaces, which mayallow software and data to be transferred from the removable storageunit to computer system.

The computing device may also include an input device such as, but notlimited to, a mouse or other pointing device such as a digitizer, and akeyboard or other data entry device (not shown). The computing devicemay also include output devices, such as, but not limited to, a display,and a display interface. The computing device may include input/output(I/O) devices, such as but not limited to, a communications interface,cable and communications path, etc. These devices may include, but arenot limited to, a network interface card, and modems. The communicationsinterface may allow software and data to be transferred between thecomputer system and external devices.

In one or more embodiments, the present embodiments are practiced in theenvironment of a computer network or networks. The network can include aprivate network, a public network (for example the Internet, asdescribed below), or a combination of both. The network can includehardware, firmware, software, or any combination thereof.

From a telecommunications-oriented view, the network can be described asa set of hardware nodes interconnected by a communications facility,with one or more processes (hardware, firmware, software, or anycombination thereof) functioning at each such node. The processes caninter-communicate and exchange information with one another viacommunication pathways between them using interprocess communicationpathways. On these pathways, appropriate communications protocols areused.

An exemplary computer and/or telecommunications network environment inaccordance with the present embodiments may include nodes, which mayinclude hardware, firmware, software, or any combination thereof. Thenodes may be interconnected via a communications network. Each node mayinclude one or more processes, executable by processors incorporatedinto the nodes. A single process may be run by multiple processors, ormultiple processes may be run by a single processor, for example.Additionally, each of the nodes may provide an interface point betweenthe network and the outside world, and may incorporate a collection ofsub-networks.

In an exemplary embodiment, the processes may communicate with oneanother through interprocess communication pathways supportingcommunication through any communications protocol. The pathways mayfunction in sequence or in parallel, continuously or intermittently. Thepathways can use any of the communications standards, protocols, ortechnologies described herein with respect to a communications network,in addition to standard parallel instruction sets used by manycomputers.

Communications between the nodes may be made possible by acommunications network. A node may be connected either continuously orintermittently with a communications network. As an example, in thecontext of the present invention, a communications network can be adigital communications infrastructure providing adequate bandwidth andinformation security.

The communications network can include wireline communicationscapability, wireless communications capability, or a combination ofboth, at any frequencies, using any type of standard, protocol, ortechnology. In addition, in the present embodiments, the communicationsnetwork can be a private network (for example, a VPN) or a publicnetwork (for example, the Internet).

A non-inclusive list of exemplary wireless protocols and technologiesused by a communications network includes BlueTooth™, general packetradio service (GPRS), cellular digital packet data (CDPD), mobilesolutions platform (MSP), multimedia messaging (MMS), wirelessapplication protocol (WAP), code division multiple access (CDMA), shortmessage service (SMS), wireless markup language (WML), handheld devicemarkup language (HDML), binary runtime environment for wireless (BREW),radio access network (RAN), and packet switched core networks (PS-CN).Also included are various generation wireless technologies. An exemplarynon-inclusive list of primarily wireline protocols and technologies usedby a communications network includes asynchronous transfer mode (ATM),enhanced interior gateway routing protocol (EIGRP), frame relay (FR),high-level data link control (HDLC), Internet control message protocol(ICMP), interior gateway routing protocol (IGRP), Internetwork packetexchange (IPX), ISDN, point-to-point protocol (PPP), transmissioncontrol protocol/Internet protocol (TCP/IP), routing informationprotocol (RIP), and user datagram protocol (UDP). As skilled personswill recognize, any other known or anticipated wireless or wirelineprotocols and technologies can be used.

Embodiments of the present invention may include apparati for performingthe operations described herein. An apparatus may be speciallyconstructed for the desired purposes, or it may comprise a generalpurpose device selectively activated or reconfigured by a program storedin the device.

In one or more embodiments, the functions are embodied inmachine-executable instructions. The instructions can be used to cause aprocessing device, for example a general-purpose or special-purposeprocessor, which is programmed with the instructions, to perform thesteps of the present invention. Alternatively, the steps of the presentinvention can be performed by specific hardware components that containhardwired logic for performing the steps, or by any combination ofprogrammed computer components and custom hardware components. Forexample, the present invention can be provided as a computer programproduct, as outlined above. In this environment, the embodiments caninclude a machine-readable medium having instructions stored on themedium. The instructions can be used to program any processor orprocessors (or other electronic devices) to perform a process or methodaccording to the described exemplary embodiments. In addition, one ormore methods of the present invention can also be downloaded and storedon a computer program product. Here, the program can be transferred froma remote computer (e.g., a server) to a requesting computer (e.g., aclient) by way of data signals embodied in a carrier wave or otherpropagation medium via a communication link (e.g., a modem or networkconnection), and ultimately such signals may be stored on the computersystems for subsequent execution.

The methods of the present invention can be implemented in a computerprogram product accessible from a computer-usable or computer-readablestorage medium that provides program code for use by or in connectionwith a computer or any instruction execution system. A computer-usableor computer-readable storage medium can be any apparatus that cancontain or store the program for use by or in connection with thecomputer or instruction execution system, apparatus, or device.

A data processing system suitable for storing and/or executing thecorresponding program code can include at least one processor coupleddirectly or indirectly to computerized data storage devices such asmemory elements. Input/output (I/O) devices (including but not limitedto keyboards, displays, pointing devices, etc.) can be coupled to thesystem. Network adapters may also be coupled to the system to enable thedata processing system to become coupled to other data processingsystems, remote printers, or storage devices through intervening privateor public networks. To provide for interaction with a user, the featurescan be implemented on a computer with a display device, such as an LCD(liquid crystal display), or another type of monitor for displayinginformation to the user, and a keyboard and an input device, such as amouse or trackball by which the user can provide input to the computer.

A computer program as described herein can be a set of instructions thatcan be used, directly or indirectly, in a computer. The systems andmethods described herein can be implemented using programming languagessuch as Flash™, JAVA™, C++, C, C#, Python, Visual Basic™, JavaScript™PHP, XML, HTML, etc., or any combination of programming languages,including compiled or interpreted languages, and can be deployed in anyform, including as a stand-alone program or as a module, component,subroutine, or other unit suitable for use in a computing environment.The software can include, but not be limited to, firmware, residentsoftware, microcode, etc. Protocols such as SOAP/HTTP may be used inimplementing interfaces between programming modules. The components andfunctionality described herein may be implemented on any desktopoperating system executing in a virtualized or non-virtualizedenvironment, using any programming language suitable for softwaredevelopment, including, but not limited to, different versions ofMicrosoft Windows™, Apple™ Mac™, iOS™, Unix™/X-Windows™, Linux™,Android™, etc. The system can be implemented using a Web applicationframework, such as Ruby on Rails.

Suitable processors for the execution of a program of instructionsinclude, but are not limited to, general and special purposemicroprocessors, and a sole processor or one of multiple processors orcores, of any kind of computer. A processor may receive and storeinstructions and data from a computerized data storage device such as aread-only memory, a random access memory, both, or any combination ofthe data storage devices described herein. A “processor” may include anyprocessing circuitry or control circuitry operative to control theoperations and performance of an electronic device.

The systems, modules, and methods described herein can be implementedusing any combination of software, firmware, or hardware elements. Thesystems, modules, and methods described herein can be implemented usingone or more virtual machines operating alone or in combination with oneother. Any applicable virtualization solution can be used forencapsulating a physical computing machine platform into a virtualmachine that is executed under the control of virtualization softwarerunning on a hardware computing platform or host. The virtual machinecan have both virtual system hardware and guest operating systemsoftware.

The systems and methods described herein can be implemented in acomputer system that includes a back-end component, such as a dataserver, or that includes a middleware component, such as an applicationserver or an Internet server, or that includes a front-end component,such as a client computer having a graphical user interface or anInternet browser, or any combination of them. The components of thesystem can be connected by any form or medium of digital datacommunication such as a communication network. Examples of communicationnetworks include, e.g., a LAN, a WAN, and the myriad computers andnetworks that form the Internet.

One or more embodiments of the invention may be practiced with othercomputer system configurations, including hand-held devices,microprocessor systems, microprocessor-based or programmable consumerelectronics, minicomputers, mainframe computers, etc. The invention mayalso be practiced in distributed computing environments where tasks areperformed by remote processing devices that are linked through anetwork.

The terms “computer program medium” and “computer readable medium” maybe used to generally refer to media such as, but not limited to, aremovable storage drive, or a hard disk installed in hard disk drive.These computer program products may provide software to a computersystem. The invention may be directed to such computer program products.

References to “one embodiment,” “an embodiment,” “example embodiment,”“various embodiments,” etc., may indicate that the embodiment(s) of theinvention so described may include a particular feature, structure, orcharacteristic, but not every embodiment necessarily includes theparticular feature, structure, or characteristic. Further, repeated useof the phrase “in one embodiment,” or “in an exemplary embodiment,” doesnot necessarily refer to the same embodiment.

In the present written description and claims, the terms “coupled” and“connected,” along with their derivatives, may be used. It should beunderstood that these terms may be not intended as synonyms for eachother. Rather, in particular embodiments, “connected” may be used toindicate that two or more elements are in direct physical or electricalcontact with each other. “Coupled” may mean that two or more elementsare in direct physical or electrical contact. However, “coupled” mayalso mean that two or more elements are not in direct contact with eachother, but yet still co-operate or interact with each other.

An algorithm may be described herein, and generally considered to be aself-consistent sequence of acts or operations leading to a desiredresult. These include physical manipulations of physical quantities.Usually, though not necessarily, these quantities take the form ofelectrical or magnetic signals capable of being stored, transferred,combined, compared, and otherwise manipulated. It has proven convenientat times, principally for reasons of common usage, to refer to thesesignals as bits, values, elements, symbols, characters, terms, numbersor the like. It should be understood, however, that all of these andsimilar terms are to be associated with the appropriate physicalquantities, and are merely convenient labels applied to thesequantities.

Unless specifically stated otherwise, it may be appreciated thatthroughout the specification, terms such as “processing,” “computing,”“calculating,” “determining,” or the like, refer to the action and/orprocesses of a computer or computing system, or a similar electroniccomputing device, that manipulate and/or transform data represented asphysical, such as electronic, quantities within the registers of acomputing system and/or memories into other data similarly representedas physical quantities within the memories of a computing system,registers, or other such information storage, transmission or displaydevices.

In a similar manner, the term “processor” may refer to any device orportion of a device that processes electronic data from registers and/ormemory to transform that electronic data into other electronic data thatmay be stored in registers and/or memory. A “computing platform” maycomprise one or more processors. As used herein, “software” processesmay include, for example, software and/or hardware entities that performwork over time, such as tasks, threads, and intelligent agents. Also,each process may refer to multiple processes, for carrying outinstructions in sequence or in parallel, continuously or intermittently.The terms “system” and “method” are used herein interchangeably insofaras the system may embody one or more methods and the methods may beconsidered as a system.

While one or more embodiments of the invention have been described,various alterations, additions, permutations, and equivalents thereofare included within the scope of the invention.

In the description of embodiments, reference is made to the accompanyingdrawings that form a part hereof, which show by way of illustrationspecific embodiments of the claimed subject matter. It is to beunderstood that other embodiments may be used, and that changes oralterations, such as structural changes, may be made. Such embodiments,changes, or alterations are not necessarily departures from the scopewith respect to the intended claimed subject matter. While the stepsherein may be presented in a certain order, in some cases the orderingmay be changed so that certain inputs are provided at different times orin a different order without changing the function of the systems andmethods described. The disclosed procedures can also be executed indifferent orders. Additionally, various computations that are usedherein need not be performed in the order disclosed, and otherembodiments using alternative orderings of the computations can bereadily implemented. In addition to being reordered, the computationscan also be decomposed into sub-computations with the same results.

What is claimed is:
 1. A portable programmable computing apparatuscomprising: a programmable microcontroller coupled to a memory unit, aportable power source, and a communications unit, wherein: the memoryunit contains preprogrammed executable content; the communications unitis configured to broadcast connectivity information when activated; thecommunications unit is further configured to receive requests forconnection from a third party device; and the microcontroller is adaptedto validate properly formatted requests for connection; wherein when aconnection request is improperly formatted, the microcontroller asks thethird party device to submit a properly formatted request, up to apredetermined number of attempts; upon receiving a properly formattedrequest from the third party device, the microcontroller executes thepreprogrammed executable content; and when the microcontroller receivesan improperly formatted request from the third party device for saidpredetermined number of attempts, the microcontroller ignores subsequentcommunications from the third party device.
 2. The apparatus of claim 1,wherein the microcontroller allows access to the third party device whenthe third party device presents to the microcontroller a properlyformatted request and valid login credentials.
 3. The apparatus of claim1, wherein the communications unit comprises at least one of an Internetconnection component and a cellular telephone communications component.4. The apparatus of claim 1, wherein the preprogrammed executablecontent comprises at least one of a Webpage, an executable program, anddata.
 5. The apparatus of claim 4, wherein the preprogrammed executablecontent comprises an executable program configured to enable themicrocontroller to link the third party device with an external computervia the communications unit.
 6. The apparatus of claim 1, wherein themicrocontroller is programmed by connecting the microcontroller to anexternal computer using a technique comprising at least one of drag anddrop, selection from a list, and customized user-tailored programming.7. The apparatus of claim 1, wherein the microprocessor maintainsconnection with more than one third party device simultaneously.
 8. Asmall portable programmable computer comprising a programmable centralprocessing unit configured to perform the tasks of tracking, scanning,and hosting a Website; wherein the computer is hidden in an itemnormally used as a garment, said item from the group of items consistingof a hat and an animal collar.
 9. The computer of claim 8 comprising aradio configured to scan for networking access points using a pluralityof protocols in at least one frequency band comprising either 2.4 Ghz or5 Ghz.
 10. The computer of claim 9 wherein the protocols comprise atleast one of Wi-Fi, Bluetooth, and software-defined radio.
 11. A methodfor surreptitiously scanning for Wi-Fi access points, said methodcomprising: hiding a computer comprising a microcontroller, a radio, andan antenna within a wearable item; activating the radio to receive RFsignals proximate the computer; invoking a Wi-Fi detector to recognizeWi-Fi access point signatures among the RF signals received by theradio; and for each recognized Wi-Fi access point signature, storingSSID, BSSID, signal strength, and encryption algorithm informationassociated with the corresponding access point.
 12. The method of claim11 wherein the wearable item is an item from the group of itemsconsisting of a hat, an animal collar, and a corset.
 13. The method ofclaim 11 wherein the computer further comprises a lens and a mirror,each configured to focus signals received by the radio onto a displayvisibly accessible to a human user.
 14. The method of claim 11 furthercomprising: coupling a GPS component to the microcontroller; and foreach recognized Wi-Fi access point signature, storing latitude andlongitude information for the corresponding access point.
 15. The methodof claim 11 further comprising: loading a Website onto the computer;programming the Website to act as a Wi-Fi access point; and enabling thecomputer to communicate wirelessly with at least one additionalcomputing device within a pre-defined geographical range of thecomputer.
 16. The method of claim 15 wherein the computer can beactivated only within or without a pre-established geofenced area. 17.The method of claim 15 wherein the enabling step is performedautomatically.
 18. A method for enabling a plurality of users tosurreptitiously communicate with a digital database, said methodcomprising: distributing a plurality of digital computers, hidden inwearable items, to the users; equipping each computer with a radio andan antenna; and enabling each user to activate at least one of thecomputers to use the associated radio to exchange digital data with thedatabase.
 19. The method of claim 18 wherein: the database containsmarketing information of potential interest to each of the users; andwhen a computer is moved into a preselected location, the databasecommunicates to said computer information pertinent to the location. 20.The method of claim 19 wherein the location is within a retail store,and the information pertains to at least one product situated proximatethe location.